<?php

namespace Modules\Admin\Http\Controllers;

use App\Admin;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\AddAdminRequest;
use Spatie\Permission\Models\Role;

//用户数据资源类
class AdminUserController extends Controller
{
    /**
     * 分页方法
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
//        获得所有数据  进行分页处理然后进入index操作 详情参考laravel手册的分页 下面 where是条件，目的是隐藏站长用户
        $admins = Admin::where('name','!=','admin')->paginate(10);
//        加载页面并向页面传递数据
        return view('admin::adminuser.index',compact('admins'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('admin::create');
    }

    /**
     * 添加用户数据方法
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(AddAdminRequest $request)
    {
//        接收数据
        $post = $request->all();
//        dd($post);
        $post['password'] = bcrypt($post['password']);
        Admin::create($post);
        session()->flash('success','添加成功');
        return redirect()->route('adminuser.index');
    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * 更新方法
     * 参照路由表PUT可知需要接受的参数
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(Request $request,$id)
    {
        //能进入方法的前提是表单验证通过,我们只需要根据id找到对应用户的数据,然后进行修改
        $admin = Admin::find($id);
//        dd($admin);
//        得到input中的name数据
//        将用户提交的数据赋值给旧数据
        $admin->name = $request->input('name');
//        dd($admin->name = $request->input('name'));
        $admin->nickname = $request->input('nickname');
//        用户修改了密码我们才能更新，没填写密码我们就不更新。所有判断一下“是否获得了用户提交的密码”
        if($request->input('password')){
            $admin->password = $request->input('password');
        }
//        存入数据库
        $admin->save();
//        设置闪存信息
        session()->flash('success','修改成功');
//        跳转页面  跳转到 adminuser目录下的index文件中
        return redirect()->route('adminuser.index');
    }

    /**
     * 删除方法
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
        Admin::destroy($id);
        session()->flash('success','删除成功');
        return back();
    }

//    创建展示用户分配角色的方法
    public function showRole($adminid){
//        获得当前id的全部库中的用户数据
        $admin= Admin::find($adminid);
//        dd($admin);
//        获得数据库中的所有的角色的数据
        $roles = Role::get();
//        dd($role);
//        加载模板   将当前id 以及数据库中所有的角色信息带入模板
        return view('admin::adminuser.showRole',compact('admin','roles'));
    }

//    角色分配处理方法
    public function assignRole(Request $request,$adminid){

//        dd($adminid);
        //获得当前id条的的后台数据
        $admin = Admin::find($adminid);
        //使用手册中的方法将角色数据同步给当前操作的用户
        $admin->syncRoles($request->input('name'));
//        dd(3330);
        //设置闪存并返回
        session()->flash('success','角色设置成功');
        //返回上个页面
        return back();
    }



}
